The invention relates generally to computer systems, and more particularly to an improved method and system for managing the synchronization of local and remote data by multiple applications and system components.
Many computer users store their data on a network server, and then need access to that data when not connected to the server. For example, mobile computer users often install a number of applications that allow them to work while disconnected from the corporate network, i.e., while offline, and thus need access to their files. In one commonplace situation, a mobile user has both a company-provided desktop machine connected directly to the network, and a home machine which can temporarily connect to the network through a dial-up connection to access the data. Other users may have a laptop for traveling, a home machine and a corporate machine. Similarly, even in non-networked environments, a mobile user may work on a laptop computer while traveling instead of a home desktop computer. In each of these situations, the user typically needs to download data, work offline, and propagate any changes back to the network (or other machine).
Some applications provide the user with various mechanisms for downloading and synchronizing data for offline use. For example, Microsoft(copyright) Corporation""s Outlook(trademark) application program provides for a user to synchronize (e.g., generally download) electronic mail messages for offline use. Then, upon return to the office and reconnection to the network, or periodically via a dial-in connection to the network, the user instructs the application to synchronize (e.g., generally upload) data to handle offline activities.
Thus, to prepare for mobile computing, the user needs to instruct such applications to accumulate (e.g., download) the data for offline use while connected to the network. Upon later reconnection, the user needs to instruct the applications to synchronize offline changes to that data with the network. However, a first difficulty with synchronization that is encountered by a user is that each application that provides a synchronization mechanism has its own user interface, methods and configuration settings to accomplish the synchronization. As a result, the user needs to learn a different user interface to configure various settings for each application. Moreover, each of the applications present their information (e.g., the download progress) differently to the user, whereby the user has to learn to correctly deal with these different presentations of information for each application. In general, the user has inconsistent experiences when synchronizing the data of various applications.
A second, and perhaps more frustrating difficulty encountered by a user, is that the user needs to explicitly start each application to synchronize that application""s data. As a result, if the user wants to synchronize data from several applications, the user needs to individually start each application to perform the synchronization. As can be appreciated, this can become a time-consuming and tedious procedure, especially for users that frequently work away from the network.
Briefly, the present invention provides a centralized, standardized mechanism for managing the synchronization of data between local and remote computers according to user preferences. Applications register respective handlers with a synchronization manager. On a synchronize event, such as a manual request for synchronization, or, based on user preferences, a notification of an event such as logon or logoff, the synchronization manager queues the registered application handlers, and calls the handlers to perform the synchronization of items therein. Progress and results are communicated to a user-viewable dialog via callbacks from the handlers to the synchronization manager.
The synchronization manager provides consistent user interfaces for obtaining user preferences related to synchronization and for presenting information to the user, thus resulting in a consistent user experience. A connection object obtains and/or or maintains a network connection, such as for purposes of performing scheduled synchronizations.
Other advantages will become apparent from the following detailed description when taken in conjunction with the drawings, in which: